using System;
using System.Data;
using System.Text;
using System.Collections;

namespace Adoor.Domain.Tiers
{


    public abstract class Role_Conjoint
    {

        public virtual Personne PersonnePhysique
        {
            get
            {
                return this.m_personnePhysique;
            }
            set
            {
                this.m_personnePhysique = value;
            }
        }

        public virtual System.Collections.Generic.IList<Role_Enfant> Enfants
        {
            get { return this.m_Enfants; }
        }

        public virtual DateTime Date_Union
        {
            get
            {
                return this.m_Date_Union;
            }
            set
            {
                this.m_Date_Union = value;
            }
        }

        public virtual Adresse Adresse_Union
        {
            get
            {
                return this.m_Adresse_Union;
            }
            set
            {
                this.m_Adresse_Union = value;
            }
        }


        public virtual DateTime Date_Divorse
        {
            get
            {
                return this.m_Date_Divorse;
            }
            set
            {
                this.m_Date_Divorse = value;
            }
        }

        public virtual Adresse Adresse_Divorse
        {
            get
            {
                return this.m_Adresse_Divorse;
            }
            set
            {
                this.m_Adresse_Divorse = value;
            }
        }

        public virtual DateTime Date_Remariage
        {
            get
            {
                return this.m_Date_Remariage;
            }
            set
            {
                this.m_Date_Remariage = value;
            }
        }

        public virtual Adresse Adresse_Remariage
        {
            get
            {
                return this.m_Adresse_Remariage;
            }
            set
            {
                this.m_Adresse_Remariage = value;
            }
        }


        public virtual Adoor.Domain.Tiers.Enums.Type_Union Type_Union
        {
            get
            {
                return this.m_type_Union;
            }
            set
            {
                this.m_type_Union = value;
            }
        }

        //public virtual IList/*SACIJO.Domain.Retraite.Dossier.Document */ Documents
        //{
        //    get { return this.m_Documents; }
        //}

        public virtual Adoor.Domain.Tiers.Enums.Situation_Ex_Conjoint Situation_Ex_Conjoint
        {
            get
            {
                return this.m_situation_Ex_Conjoint;
            }
            set
            {
                this.m_situation_Ex_Conjoint = value;
            }
        }

        public virtual Adoor.Domain.Tiers.Role_Assure Assure
        {
            get
            {
                return this.m_assure;
            }
            set
            {
                this.m_assure = value;
            }
        }

        /// <summary>
        /// Called when user is creating a new entity.
        /// </summary>
        protected virtual void OnCreate(object[] args)
        {
            this.Date_Divorse = new DateTime(1800, 1, 1);
            this.Date_Remariage = new DateTime(1800, 1, 1);
            this.Date_Union = new DateTime(1800, 1, 1);
        }

        /// <summary>
        /// Called when user is retreiving an entity from storage
        /// </summary>
        protected virtual void OnMaterialize()
        {

        }

        protected abstract Personne m_personnePhysique { get; set; }
        //protected abstract IList m_Documents { get; }
        protected abstract Adresse m_Adresse_Union { get; set;}
        protected abstract DateTime m_Date_Union { get; set;}
        protected abstract Adresse m_Adresse_Divorse { get; set;}
        protected abstract DateTime m_Date_Divorse { get; set;}
        protected abstract Adresse m_Adresse_Remariage { get; set;}
        protected abstract DateTime m_Date_Remariage { get; set;}
        protected abstract Adoor.Domain.Tiers.Enums.Type_Union m_type_Union { get; set; }
        protected abstract Adoor.Domain.Tiers.Enums.Situation_Ex_Conjoint m_situation_Ex_Conjoint { get; set; }
        protected abstract Adoor.Domain.Tiers.Role_Assure m_assure { get; set; }
        protected abstract System.Collections.Generic.IList<Role_Enfant> m_Enfants { get; }
 
    }
}

